package com.woniuxy.JDKproxy.aspect;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * 这个切面类中，定义如何去增强被代理对象  基于注解的切面类配置
 */
@org.aspectj.lang.annotation.Aspect  //这个注解表示 告诉配置文件中的 <aop:aspectj-autoproxy/> ok我是个切面类
@Component   //工具类 通常使用这个注解
//@Configuration  //通常约定 配置类用这个注解
public class Aspect {

    @Pointcut(value = "execution(* com.woniuxy.JDKproxy.service.impl.*.*(..))")
    private void myPointCut(){
        //这个就是切入点表达式
    };


    /**
     * 前置通知
     */
    @Before(value = "myPointCut()")
    public void log(){
        System.out.println("后置增强，打印日志……");
    }

    /**
     * 后置通知
     */
    @After(value = "myPointCut()")
    public void checkPermission(){
        System.out.println("前置增强，执行完service方法前，检查下权限……");
    }
}
